Databases are ubiquitous in computing. They are used in many applications, spanning the range of computer software. They are used to store lists of clients, handle business transactions, and aid in product development, and perform many other functions. They serve as a data repository for almost any application that requires storage of data.
However, it is difficult to experiment with the contents of a database without interfering with the work of others using the database. For example, a product development group may use a database as a repository for product requirements. A product developer may wish to modify and experiment with the product requirements without disturbing the work of other developers. To do so, the developer must create a private version of the data so that his or her changes do not interfere with the data used by the other developers. A private version or branch of the data would serve this end. But currently there is no way to create a private version or branch within a database for the product developer to use. Instead, the product developer must create a copy of the entire database, perform his or her experiments and modifications, and manually copy any changes back into the main database. This process is arduous and error prone.